using System.Collections.Generic;

namespace SG.Productivity.DesktopControlPanel.Support
{
    public interface IParameterCollection
    {
        int Count { get; }
        string GetKey(int index);
        string Get(int index);
        IEnumerable<TElement> Get<TElement>();
        TElement? FirstOrDefault<TElement>() where TElement : struct;
        bool Contains<TElement>(TElement element) where TElement : struct;
    }

    public interface IModifiableParameterCollection : IParameterCollection
    {
        IModifiableParameterCollection Put<TElement>(TElement item);
    }
}